from faker import Faker
faker = Faker(locale='zh_cn')
name = faker.name()
# 在python中统一了类与类型的概念
class Foo:
    def find(self):
        print("我是绑定对象的方法")
# print(Foo)      # <class '__main__.Foo'>
obj = Foo()
# print(obj)      # <__main__.Foo object at 0x000001B064461220> 对象的地址值
# print(type(obj))        # <class '__main__.Foo'>

#字符串 列表 集合 字典  元组 ，也是类与对象的关系

# 通过str类创建了字符串
# b = str("bbb")
# print(type(b))      # <class 'str'>
import pymysql
"""
这个是用来连接数据库的
"""
"""
连接数据库需要哪些：
host：ip地址
user：用户名
password：密码
端口号，默认就是3306，不写了
database：数据库名称
cursorclass：可以把返回值设置成字典
"""
# 创建数据库对象
db = pymysql.connect(host = '47.97.51.55' ,user = 'root',password='123456',database='jiac',cursorclass =pymysql.cursors.DictCursor)

# 通过db创建游标，游标相当于在navicat执行sql的意思
cursor = db.cursor()

# 查询，符合sql条件的，都返回
"""
cursor.execute("select * from student")         # 执行sql
result = cursor.fetchall()       
print(result)
"""

# 查询，符合sql条件的，只返回一条：fetchone
"""
cursor.execute("select * from student")
result = cursor.fetchone()
print(result)
"""

# 新增
"""
对数据库发生了真实改动的，都需要用数据库对象来提交
增、删、改

查询不需要数据库对象提交，因为没对表进行改变
"""
"""
cursor.execute(f"insert into student(name) values('{name}')")
db.commit()     # 通过数据库对象提交

#再查询，看有没有提交成功
cursor.execute('select * from student')
print(cursor.fetchall())
"""

# 删除
"""
cursor.execute("delete from student where id=1")
db.commit()

# 再查询，看有没有删除成功
cursor.execute("select * from student")
print(cursor.fetchall())
"""

# 改
cursor.execute("update student set address='鞍山' where id =2")
db.commit()

# 查看改动
cursor.execute('select * from student')
print(cursor.fetchall())


# 用完数据库要记得关闭
cursor.close()      # 先关闭游标
db.close()          # 再关闭数据库对象




